package com.appspot.abcensys.client;

import java.util.ArrayList;
import java.util.TreeMap;

import com.appspot.abcensys.shared.Afwezigheid;
import com.appspot.abcensys.shared.Gebruiker;
import com.appspot.abcensys.shared.GebruikerInstelling;
import com.appspot.abcensys.shared.Les;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

/**
 * Service interface
 * 
 * @author Hugo Zonderland
 * @author Niels Timmer
 */
@RemoteServiceRelativePath("abcensysservice")
public interface AbcensysService extends RemoteService {
	
	// Installatie controle
	public boolean installatieModus();

	// GEBRUIKER
	public Gebruiker getHuidigeGebruiker();
	public ArrayList<Gebruiker> getGebruikers();
	public Gebruiker updateGebruiker(Gebruiker g);
	public Gebruiker addGebruiker(Gebruiker gebruiker);
	public Gebruiker getGebruikerByEmail(String email);
	public Void setHuidigeGebruiker(Gebruiker g);
	public int getAantalGebruikersByVakcode(String vakcode);
	
	// AFWEZIGHEID
	public ArrayList<Afwezigheid> getAfwezigheidVoorStudent();
	public TreeMap<String, ArrayList<Afwezigheid>> getAfwezigheidVoorDocent();
	public boolean addAfwezigheid(ArrayList<String> lessen, String categorie, String toelichting);
	public boolean verwijderAfwezigheid(Afwezigheid a);
	public boolean verwijderAfwezigheidByIdTrancient(Long afwezigheidId);
	public boolean verwijderAfwezigheidByLesIdAndGebruiker(String lesId);
	public TreeMap<String, ArrayList<Afwezigheid>> getAlleAfwezigheidPerVak();
	public TreeMap<String, ArrayList<Afwezigheid>> getAfwezigheidVoorStudentDashboard();
	public TreeMap<String, TreeMap<Integer, Integer>> getAfwezigheidPerInstituut();

	// LES
	public Les getLesById(Long id);
	public TreeMap<Les, Boolean> getLesRooster();
	public int getTotaalAantalLessenByKlasAndVakcode(String klascode, String vakcode);
	
	// INSTELLINGEN
	public GebruikerInstelling getGebruikerInstelling();
	public boolean updateGebruikerInstelling(ArrayList<Boolean> instellingen); 

	// LOSSE FUNCTIES
	public String getLoginUrl();
	public String getLogoutUrl();

	// CALENDARSERVLET
	public int getWeekNummer();
	public int getJaar();
}
